package com.example.dao;

import com.example.entity.TypeInfo;
import com.example.vo.TypeInfoVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import tk.mybatis.mapper.common.Mapper;

import java.util.List;

/**
 * 分类信息数据访问层接口
 * 主要职责：
 * 1. 管理文件/数据分类信息
 * 2. 提供分类检索与统计能力
 */
@Repository
public interface TypeInfoDao extends Mapper<TypeInfo> {

    /**
     * 条件查询分类信息（支持名称模糊搜索）
     *
     * @param name 查询条件：
     *             - 模糊匹配分类名称（name字段，LIKE %value% 查询）
     *             - 传 "all" 时查询全部记录
     * @return {@link List<TypeInfoVo>} 分类信息视图对象列表（包含扩展字段）
     *
     * @implNote 对应XML中的<select id="findByName">实现，默认按ID升序排列
     */
    List<TypeInfoVo> findByName(@Param("name") String name);

    /**
     * 统计分类总数
     *
     * @return {@link Integer} 分类记录总数（包含已删除标记的记录）
     *
     * @implNote 对应XML中的<select id="count">实现，用于系统监控面板展示
     */
    Integer count();
}